VTS中文网

第五节 Python基础之函数

发布日期:2025-01-04 12:05    点击次数:62

    函数的定义,有点类似我们之前说的变量一样,也是为了便于维护,同时也提高了代码的可扩展性和重用性。函数分为有返回值的函数和没有返回值的函数(也称过程函数)。示例:        在以上的示例中,我们定义了一个function()函数,这个函数里面是没有参数的,但是有的函数是由参数的,比如list中添加元素的append(self, p_object)函数,p_object就是一个参数,这个参数叫做形参。参数分为形参和实参。    形参,在函数被调用的时候,才会被分配内存,当这个函数调用结束之后,内存就被释放了,所以我们说形参的作用域是在本函数内。    实参,也就是在调用函数的时候,将实际的值传给形参,这个实际的值就是实参。    案例:      在进行参数传递的时候,又可以分出两种传递形式,位置参数和关键字参数。位置参数就是我们平时正常进行参数传递形式,也就是要一一对应,多了少了都不可以;那关键字参数就是在进行值传递的时候,直接写上形参等于多少,比如x=1,示例:     有一点需要注意的就是,当位置参数和关键字参数混合使用的时候,位置参数要写在关键字参数的左边的,也是需要一一对应的。   我们经常会看到*args, **kwargs这样的参数,比如set集合中的add(self,*args, **kwargs),这样的参数我们叫做参数组。   案例:        全局变量和局部变量:    全局变量是定义在函数外面的值,作用域是在本程序中都有效,局部变量是定义在函数里面的值,作用域是在本函数中,一般情况我们都是全局变量用大写,局部变量用小写,比如:      嵌套函数: 就是在函数内定义函数,而函数的作用域在定义的时候就已经固定了,不会随着调用位置的改变而改变     递归: 就是函数内部自己调用自己,具有以下特性:        ①必须有一个明确的结束条件,如果没有明确的结束条件的话,整个函数将会进入一个不断的递归调用中,进入了一个死循环        ②每 递归一次,问题规模都会减少,向结束条件靠拢        ③递归的效率不高,因为要重复的调用,知道条件满足,很耗性能,如果递归的次数过多,还容易造成栈溢出     案例:      匿名函数: 就是没有函数名的函数,定义的格式如下:           lambda 参数 : 返回值           匿名函数一般是和其他函数结合使用      案例:     函数式编程: 在语言编程中,有面向过程,函数式,和面向对象三种,面向过程简单的说,就是做一件事需要自己一步步去安排,而面向对象就是自己不需要知道过程是怎么进行的,需要的时候直接去调用就行了,函数式呢?就是我们定义的编程函数加上数学意义的函数,它的特性如下:     ①不可变,不用变量保存状态,不能修改变量      ②第一类对象,函数即"变量"         高阶函数:函数接收的参数是一个函数名;返回值包含函数名      ③尾调用,也就是在函数的最后一步调用另一个函数,我们需要注意的是,最后一行不一定是最后一步,需要补充的是,关于尾调用的优化就是在最后一步的时候进行递归        map()函数:主要是用来修改列表的元素,而且每个元素的顺序不改变,在map函数中,第一个参数是处理方法,一般情况我们可以直接用匿名函数来完成,第二个参数是可迭代对象,得到的结果是一个可迭代对象       filter()函数:主要用于遍历序列中的每个元素,判断每个元素的布尔值,如果是True则留下       reduce()函数:主要用来对序列的合并      内置函数:     案例一:数学运算       案例二:集合类操作       实例三:逻辑判断      实例四:反射                                  




Powered by VTS中文网 @2013-2022 RSS地图 HTML地图

Copyright Powered by365建站 © 2013-2024